var path = require('path');
var express = require('express');
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var config = require('config-lite') (__dirname);
var routes = require('./routes');
var pkg = require('./package');

var app = express();


// 设置模板根目录

app.set('views',path.join(__dirname,'views'));

// 设置模板引擎为ejs
// 注意是view不是views哦！

app.set('view engine','jade');


// 设置静态文件目录

app.use(express.static(path.join(__dirname,'public')));

// session中间件支持会话机制

app.use(session({
    name:config.session.key, // 设置cookie中保存session id的字段名称
    secret:config.session.secret, // 通过设置secret来计算hash值并放在cookie中，使产生的signedCookie防篡改
    cookie: {
        maxAge:config.session.maxAge // 过期时间，过期后cookie中的session id自动删除
    },
    store:new MongoStore({ // 将session存放到mongodb
        db:config.db,
        url:config.mongodb // mongodb地址
    })
}));



// 处理表单及文件上传的中间件
app.use(require('express-formidable')({
  uploadDir: path.join(__dirname, 'public/img'),// 上传文件目录
  keepExtensions: true// 保留后缀
}));


// 设置模板全局常量
app.locals.blog = {
  title: pkg.name,
  description: pkg.description
};



// 路由
 
routes(app);

// 监听端口，启动程序

app.listen(config.port,function(){
    console.log(`${pkg.name} listening on port ${config.port}`);
});